home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / usenet / volume7 / nethack3 / patch3f < prev    next >
Encoding:
Internet Message Format  |  1989-09-11  |  57.6 KB

  1. Path: uunet!zephyr.ens.tek.com!tekgen!tekred!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v08i021:  NetHack3 -  display oriented dungeons & dragons (Ver. 3.0), Patch3f
  5. Message-ID: <4540@tekred.CNA.TEK.COM>
  6. Date: 7 Sep 89 21:52:04 GMT
  7. Sender: nobody@tekred.CNA.TEK.COM
  8. Lines: 2071
  9. Approved: billr@saab.CNA.TEK.COM
  10.  
  11. Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
  12. Posting-number: Volume 8, Issue 21
  13. Archive-name: NetHack3/Patch3f
  14. Patch-To: NetHack3: Volume 7, Issue 56-93
  15.  
  16. #! /bin/sh
  17. # This is a shell archive.  Remove anything before this line, then unpack
  18. # it by saving it into a file and typing "sh file".  To overwrite existing
  19. # files, type "sh file -c".  You can also feed this as standard input via
  20. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  21. # will see the following message at the end:
  22. #        "End of archive 6 (of 6)."
  23. # Contents:  patch03f
  24. # Wrapped by billr@saab on Thu Sep  7 14:39:31 1989
  25. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  26. if test -f 'patch03f' -a "${1}" != "-c" ; then 
  27.   echo shar: Will not clobber existing file \"'patch03f'\"
  28. else
  29. echo shar: Extracting \"'patch03f'\" \(55124 characters\)
  30. sed "s/^X//" >'patch03f' <<'END_OF_FILE'
  31. X*** src/Old/potion.c    Wed Sep  6 15:56:36 1989
  32. X--- src/potion.c    Fri Sep  1 19:18:24 1989
  33. X***************
  34. X*** 130,142 ****
  35. X  static void
  36. X  ghost_from_bottle()
  37. X  {
  38. X!     register struct monst *mtmp;
  39. X! 
  40. X!     if(!(mtmp = makemon(&mons[PM_GHOST],u.ux,u.uy))){
  41. X          pline("This bottle turns out to be empty.");
  42. X          return;
  43. X      }
  44. X-     mnexto(mtmp);
  45. X      pline("As you open the bottle, an enormous ghost emerges!");
  46. X      if(flags.verbose)
  47. X          You("are frightened to death, and unable to move.");
  48. X--- 130,139 ----
  49. X  static void
  50. X  ghost_from_bottle()
  51. X  {
  52. X!     if(!makemon(&mons[PM_GHOST], u.ux, u.uy)){
  53. X          pline("This bottle turns out to be empty.");
  54. X          return;
  55. X      }
  56. X      pline("As you open the bottle, an enormous ghost emerges!");
  57. X      if(flags.verbose)
  58. X          You("are frightened to death, and unable to move.");
  59. X***************
  60. X*** 876,881 ****
  61. X--- 873,879 ----
  62. X                  obj->spe > -6 && !rn2(10)) {
  63. X                  Your("%s somewhat.", aobjnam(obj,"rust"));
  64. X                  obj->spe--;
  65. X+                 goto poof;
  66. X              } else if (obj->olet == POTION_SYM) {
  67. X                  Your("%s.", aobjnam(obj,"dilute"));
  68. X                  if (obj->spe == -1) {
  69. X***************
  70. X*** 883,892 ****
  71. X                      obj->blessed = obj->cursed = 0;
  72. X                      obj->otyp = POT_WATER;
  73. X                  } else obj->spe--;
  74. X              } else if (obj->olet == SCROLL_SYM &&
  75. X                     obj->otyp != SCR_BLANK_PAPER) {
  76. X!                 if (!Blind) pline("The scroll fades.");
  77. X                  obj->otyp = SCR_BLANK_PAPER;
  78. X              } else
  79. X                  Your("%s wet.", aobjnam(obj,"get"));
  80. X          }
  81. X--- 881,899 ----
  82. X                      obj->blessed = obj->cursed = 0;
  83. X                      obj->otyp = POT_WATER;
  84. X                  } else obj->spe--;
  85. X+                 goto poof;
  86. X              } else if (obj->olet == SCROLL_SYM &&
  87. X+ #ifdef MAIL
  88. X+                    obj->otyp != SCR_MAIL &&
  89. X+ #endif
  90. X                     obj->otyp != SCR_BLANK_PAPER) {
  91. X!                 if (!Blind) {
  92. X!                     if (obj->quan == 1)
  93. X!                         pline("The scroll fades.");
  94. X!                     else pline("The scrolls fade.");
  95. X!                 }
  96. X                  obj->otyp = SCR_BLANK_PAPER;
  97. X+                 goto poof;
  98. X              } else
  99. X                  Your("%s wet.", aobjnam(obj,"get"));
  100. X          }
  101. X***************
  102. X*** 979,1009 ****
  103. X          return;
  104. X      }
  105. X  
  106. X!     mnexto(mtmp);
  107. X!     if (!Blind)
  108. X          pline("In a cloud of smoke, %s emerges!", defmonnam(mtmp));
  109. X-     else    You("smell acrid fumes.");
  110. X-     if (!Blind)
  111. X          pline("%s speaks.", Monnam(mtmp));
  112. X!     else    pline("Something speaks.");
  113. X  
  114. X      switch (obj->blessed ? 0 : obj->cursed ? 4 : rn2(5)) {
  115. X!     case 0 : pline("\"I am in your debt.  I will grant one wish!\"");
  116. X          makewish();
  117. X          mongone(mtmp);
  118. X          break;
  119. X!     case 1 : pline("\"Thank you for freeing me!\"");
  120. X          (void) tamedog(mtmp, (struct obj *)0);
  121. X          break;
  122. X!     case 2 : pline("\"You freed me!\"");
  123. X          mtmp->mpeaceful = 1;
  124. X          break;
  125. X!     case 3 : pline("\"It is about time!\"");
  126. X          pline("The %s vanishes.",
  127. X              Hallucination ? rndmonnam() : "djinni");
  128. X          mongone(mtmp);
  129. X          break;
  130. X!     default: pline("\"You disturbed me, fool!\"");
  131. X          break;
  132. X      }
  133. X  }
  134. X--- 986,1016 ----
  135. X          return;
  136. X      }
  137. X  
  138. X!     if (!Blind) {
  139. X          pline("In a cloud of smoke, %s emerges!", defmonnam(mtmp));
  140. X          pline("%s speaks.", Monnam(mtmp));
  141. X!     } else {
  142. X!         You("smell acrid fumes.");
  143. X!         pline("Something speaks.");
  144. X!     }
  145. X  
  146. X      switch (obj->blessed ? 0 : obj->cursed ? 4 : rn2(5)) {
  147. X!     case 0 : verbalize("I am in your debt.  I will grant one wish!");
  148. X          makewish();
  149. X          mongone(mtmp);
  150. X          break;
  151. X!     case 1 : verbalize("Thank you for freeing me!");
  152. X          (void) tamedog(mtmp, (struct obj *)0);
  153. X          break;
  154. X!     case 2 : verbalize("You freed me!");
  155. X          mtmp->mpeaceful = 1;
  156. X          break;
  157. X!     case 3 : verbalize("It is about time!");
  158. X          pline("The %s vanishes.",
  159. X              Hallucination ? rndmonnam() : "djinni");
  160. X          mongone(mtmp);
  161. X          break;
  162. X!     default: verbalize("You disturbed me, fool!");
  163. X          break;
  164. X      }
  165. X  }
  166. X*** src/Old/pray.c    Wed Sep  6 15:57:30 1989
  167. X--- src/pray.c    Wed Aug 30 19:03:12 1989
  168. X***************
  169. X*** 250,257 ****
  170. X                  what = rightglow;
  171. X              } else if (uamul && uamul->cursed) /* amulet */
  172. X                  otmp = uamul;
  173. X-             else if (ublindf && ublindf->cursed) /* blindfold */
  174. X-                 otmp = ublindf;
  175. X              else if (welded(uwep)) otmp = uwep;
  176. X              else {
  177. X                  for(otmp=invent; otmp; otmp=otmp->nobj)
  178. X--- 250,255 ----
  179. X***************
  180. X*** 378,391 ****
  181. X                  else {
  182. X                  if (Reflecting & W_AMUL) {
  183. X                      pline("It reflects from your medallion.");
  184. X- #if defined(EXPLORE_MODE) || defined(WIZARD)
  185. X                      makeknown(AMULET_OF_REFLECTION);
  186. X- #endif
  187. X                  } else {
  188. X                      pline("It reflects from your shield.");
  189. X-     /* No ifdef here since they could survive with an amulet of
  190. X-      * life saving which wasn't possible above.
  191. X-      */
  192. X                      makeknown(SHIELD_OF_REFLECTION);
  193. X                  }
  194. X                  }
  195. X--- 376,384 ----
  196. X***************
  197. X*** 713,725 ****
  198. X     Sacrificing a food ration got you max luck instantly, making the
  199. X     gods as easy to please as an angry dog!
  200. X  
  201. X!    Now only accepts corpses, based on their level (presumably, how hard
  202. X!    they were to kill).  Human sacrifice, as well as sacrificing unicorns
  203. X!    of your alignment, is strongly discouraged.  (We can't tell whether a dog
  204. X!    corpse was tame, so you can still sacrifice it.)
  205. X   */
  206. X  
  207. X! #define MAXVALUE 17    /* Highest corpse value */
  208. X  
  209. X      if (otmp->otyp == CORPSE) {
  210. X          register struct permonst *mtmp = &mons[otmp->corpsenm];
  211. X--- 706,718 ----
  212. X     Sacrificing a food ration got you max luck instantly, making the
  213. X     gods as easy to please as an angry dog!
  214. X  
  215. X!    Now only accepts corpses, based on the games evaluation of their
  216. X!    toughness.  Human sacrifice, as well as sacrificing unicorns of
  217. X!    your alignment, is strongly discouraged.  (We can't tell whether
  218. X!    a pet corpse was tame, so you can still sacrifice it.)
  219. X   */
  220. X  
  221. X! #define MAXVALUE 33    /* Highest corpse value (approx.) */
  222. X  
  223. X      if (otmp->otyp == CORPSE) {
  224. X          register struct permonst *mtmp = &mons[otmp->corpsenm];
  225. X***************
  226. X*** 990,996 ****
  227. X  #if defined(ALTARS) && defined(NAMED_ITEMS)
  228. X          /* The player can gain an artifact */
  229. X          if(!rn2(10)) {
  230. X!             otmp = mk_aligned_artifact((int)(levl[u.ux][u.uy].altarmask & ~A_SHRINE) - 1);
  231. X              if(otmp) {
  232. X                  dropy(otmp);
  233. X                  pline("An object appears at your %s!",
  234. X--- 983,989 ----
  235. X  #if defined(ALTARS) && defined(NAMED_ITEMS)
  236. X          /* The player can gain an artifact */
  237. X          if(!rn2(10)) {
  238. X!             otmp = mk_aligned_artifact((unsigned)(levl[u.ux][u.uy].altarmask & ~A_SHRINE));
  239. X              if(otmp) {
  240. X                  dropy(otmp);
  241. X                  pline("An object appears at your %s!",
  242. X***************
  243. X*** 1001,1007 ****
  244. X  #endif
  245. X          change_luck((value * LUCKMAX) / (MAXVALUE * 2));
  246. X          if (u.uluck != saved_luck) {
  247. X!             You(Hallucination ?
  248. X          "see crabgrass at your %s.  A funny thing in a dungeon." :
  249. X          "glimpse a four-leaf clover at your %s.",
  250. X              makeplural(body_part(FOOT)));
  251. X--- 994,1002 ----
  252. X  #endif
  253. X          change_luck((value * LUCKMAX) / (MAXVALUE * 2));
  254. X          if (u.uluck != saved_luck) {
  255. X!             if (Blind)
  256. X!             You("think you stepped on something.");
  257. X!             else You(Hallucination ?
  258. X          "see crabgrass at your %s.  A funny thing in a dungeon." :
  259. X          "glimpse a four-leaf clover at your %s.",
  260. X              makeplural(body_part(FOOT)));
  261. X*** src/Old/pri.c    Wed Sep  6 15:58:20 1989
  262. X--- src/pri.c    Fri Sep  1 14:30:01 1989
  263. X***************
  264. X*** 10,18 ****
  265. X  #include "epri.h"
  266. X  #endif
  267. X  
  268. X! static void hilite P((uchar, uchar));
  269. X  static void cornbot P((int));
  270. X! static boolean ismnst P((char));
  271. X  #if !defined(DECRAINBOW) && !defined(UNIX)
  272. X  #  define g_putch  (void) putchar
  273. X  #endif
  274. X--- 10,18 ----
  275. X  #include "epri.h"
  276. X  #endif
  277. X  
  278. X! static void hilite P((UCHAR_P, UCHAR_P));
  279. X  static void cornbot P((int));
  280. X! static boolean ismnst P((CHAR_P));
  281. X  #if !defined(DECRAINBOW) && !defined(UNIX)
  282. X  #  define g_putch  (void) putchar
  283. X  #endif
  284. X***************
  285. X*** 134,140 ****
  286. X           * will still hilite the doorway symbol.  -3.
  287. X           */
  288. X          if (!vism_at(x,y) &&
  289. X!             (!levl[x][y].omask && !levl[x][y].gmask || is_pool(x,y)))
  290. X              typ = AT_MAP;
  291. X  
  292. X      y += 2;
  293. X--- 134,140 ----
  294. X           * will still hilite the doorway symbol.  -3.
  295. X           */
  296. X          if (!vism_at(x,y) &&
  297. X!             (!OBJ_AT(x, y) && !levl[x][y].gmask || is_pool(x,y)))
  298. X              typ = AT_MAP;
  299. X  
  300. X      y += 2;
  301. X*** src/Old/priest.c    Wed Sep  6 15:58:58 1989
  302. X--- src/priest.c    Fri Sep  1 19:27:07 1989
  303. X***************
  304. X*** 220,226 ****
  305. X              (void) mongets(priest, rn2(2) ? CLOAK_OF_PROTECTION
  306. X                            : CLOAK_OF_MAGIC_RESISTANCE);
  307. X  #ifdef NAMED_ITEMS
  308. X!             otmp = mk_aligned_artifact(EPRI(priest)->shralign);
  309. X              if(otmp) {
  310. X              otmp->spe = rnd(4);
  311. X              mpickobj(priest, otmp);
  312. X--- 220,226 ----
  313. X              (void) mongets(priest, rn2(2) ? CLOAK_OF_PROTECTION
  314. X                            : CLOAK_OF_MAGIC_RESISTANCE);
  315. X  #ifdef NAMED_ITEMS
  316. X!             otmp = mk_aligned_artifact((unsigned)EPRI(priest)->shralign + 1);
  317. X              if(otmp) {
  318. X              otmp->spe = rnd(4);
  319. X              mpickobj(priest, otmp);
  320. X***************
  321. X*** 358,364 ****
  322. X  
  323. X              if(!(mtmp = makemon(&mons[PM_GHOST],u.ux,u.uy))) return;
  324. X              pline("An enormous ghost appears next to you!");
  325. X-             mnexto(mtmp);
  326. X              mtmp->mpeaceful = 0;
  327. X              if(flags.verbose)
  328. X                  You("are frightened to death, and unable to move.");
  329. X--- 358,363 ----
  330. X*** src/Old/prisym.c    Wed Sep  6 15:59:22 1989
  331. X--- src/prisym.c    Sun Aug 20 14:26:30 1989
  332. X***************
  333. X*** 218,224 ****
  334. X          return;
  335. X      if(room->mmask) mtmp = m_at(x,y);
  336. X      if(mtmp && !mtmp->mhide &&
  337. X!         (!mtmp->minvis || See_invisible || Telepat)) {
  338. X  #ifdef WORM
  339. X          if(m_atseg)
  340. X              pwseg(m_atseg);
  341. X--- 218,224 ----
  342. X          return;
  343. X      if(room->mmask) mtmp = m_at(x,y);
  344. X      if(mtmp && !mtmp->mhide &&
  345. X!         (!mtmp->minvis || See_invisible)) {
  346. X  #ifdef WORM
  347. X          if(m_atseg)
  348. X              pwseg(m_atseg);
  349. X***************
  350. X*** 226,232 ****
  351. X  #endif
  352. X          pmon(mtmp);
  353. X      }
  354. X!     else if(room->omask && !is_pool(x,y)) {
  355. X          otmp = o_at(x,y);
  356. X          atl(x,y,Hallucination ? rndobjsym() : otmp->olet);
  357. X      }
  358. X--- 226,232 ----
  359. X  #endif
  360. X          pmon(mtmp);
  361. X      }
  362. X!     else if(OBJ_AT(x, y) && !is_pool(x,y)) {
  363. X          otmp = o_at(x,y);
  364. X          atl(x,y,Hallucination ? rndobjsym() : otmp->olet);
  365. X      }
  366. X***************
  367. X*** 235,241 ****
  368. X      else if((!mtmp || mtmp->data == &mons[PM_GIANT_SPIDER]) &&
  369. X            (ttmp = t_at(x,y)) && ttmp->ttyp == WEB)
  370. X          atl(x,y,(char)WEB_SYM);
  371. X!     else if(mtmp && (!mtmp->minvis || See_invisible || Telepat)) {
  372. X          /* must be a hiding monster, but not hiding right now */
  373. X          /* assume for the moment that long worms do not hide */
  374. X          pmon(mtmp);
  375. X--- 235,241 ----
  376. X      else if((!mtmp || mtmp->data == &mons[PM_GIANT_SPIDER]) &&
  377. X            (ttmp = t_at(x,y)) && ttmp->ttyp == WEB)
  378. X          atl(x,y,(char)WEB_SYM);
  379. X!     else if(mtmp && (!mtmp->minvis || See_invisible)) {
  380. X          /* must be a hiding monster, but not hiding right now */
  381. X          /* assume for the moment that long worms do not hide */
  382. X          pmon(mtmp);
  383. X***************
  384. X*** 262,268 ****
  385. X      /* note: a zero scrsym means to ignore the presence of objects */
  386. X      if(!room->seen) tmp = STONE_SYM;
  387. X      else if(room->typ == POOL || room->typ == MOAT) tmp = POOL_SYM;
  388. X!     else if(room->omask && !Blind && room->scrsym) {
  389. X          otmp = o_at(x,y);
  390. X          tmp = Hallucination ? rndobjsym() : otmp->olet;
  391. X      }
  392. X--- 262,268 ----
  393. X      /* note: a zero scrsym means to ignore the presence of objects */
  394. X      if(!room->seen) tmp = STONE_SYM;
  395. X      else if(room->typ == POOL || room->typ == MOAT) tmp = POOL_SYM;
  396. X!     else if(OBJ_AT(x, y) && !Blind && room->scrsym) {
  397. X          otmp = o_at(x,y);
  398. X          tmp = Hallucination ? rndobjsym() : otmp->olet;
  399. X      }
  400. X*** src/Old/read.c    Wed Sep  6 15:59:45 1989
  401. X--- src/read.c    Tue Sep  5 12:06:53 1989
  402. X***************
  403. X*** 601,607 ****
  404. X              Your("mind releases itself from mundane concerns.");
  405. X          else if (!strncmp(plname, "Maud", 4))
  406. X              pline("As your mind turns inward on itself, you forget everything else.");
  407. X!         else if (flags.female)
  408. X              pline("Who was that Maud person anyway?");
  409. X          else
  410. X              pline("Thinking of Maud you forget everything else.");
  411. X--- 601,607 ----
  412. X              Your("mind releases itself from mundane concerns.");
  413. X          else if (!strncmp(plname, "Maud", 4))
  414. X              pline("As your mind turns inward on itself, you forget everything else.");
  415. X!         else if (rn2(2))
  416. X              pline("Who was that Maud person anyway?");
  417. X          else
  418. X              pline("Thinking of Maud you forget everything else.");
  419. X*** src/Old/restore.c    Wed Sep  6 16:00:22 1989
  420. X--- src/restore.c    Fri Aug 25 15:56:10 1989
  421. X***************
  422. X*** 99,105 ****
  423. X      off_t differ;
  424. X  
  425. X      mread(fd, (genericptr_t)&monbegin, sizeof(monbegin));
  426. X! #ifndef MSDOS
  427. X      differ = (genericptr_t)(&mons[0]) - (genericptr_t)(monbegin);
  428. X  #else
  429. X      differ = (long)(&mons[0]) - (long)(monbegin);
  430. X--- 99,105 ----
  431. X      off_t differ;
  432. X  
  433. X      mread(fd, (genericptr_t)&monbegin, sizeof(monbegin));
  434. X! #if !defined(MSDOS) && !defined(M_XENIX)
  435. X      differ = (genericptr_t)(&mons[0]) - (genericptr_t)(monbegin);
  436. X  #else
  437. X      differ = (long)(&mons[0]) - (long)(monbegin);
  438. X***************
  439. X*** 118,130 ****
  440. X          mread(fd, (genericptr_t) mtmp, (unsigned) xl + sizeof(struct monst));
  441. X          if(!mtmp->m_id)
  442. X              mtmp->m_id = flags.ident++;
  443. X! #ifndef MSDOS
  444. X!         /*ANSI type for differ is ptrdiff_t - long may be wrong*/
  445. X!         /*for segmented architecture - may be better to cast pointers*/
  446. X!         /*to (struct permonst *) rather than (genericptr_t)*/
  447. X!         /*this code handles save file -  so any bug should glow*/
  448. X!         /*probably best not to keep lint from complaining*/
  449. X! /*#ifdef LINT    /*possible compiler/hardware dependency - */
  450. X  /*        if (differ) mtmp->data = NULL;*/
  451. X  /*#else*/
  452. X          mtmp->data = (struct permonst *)
  453. X--- 118,132 ----
  454. X          mread(fd, (genericptr_t) mtmp, (unsigned) xl + sizeof(struct monst));
  455. X          if(!mtmp->m_id)
  456. X              mtmp->m_id = flags.ident++;
  457. X! #if !defined(MSDOS) && !defined(M_XENIX)
  458. X!         /* ANSI type for differ is ptrdiff_t --
  459. X!          * long may be wrong for segmented architecture --
  460. X!          * may be better to cast pointers to (struct permonst *)
  461. X!          * rather than (genericptr_t)
  462. X!          * this code handles save file -- so any bug should glow
  463. X!          * probably best not to keep lint from complaining
  464. X!          */
  465. X! /*#ifdef LINT    /* possible compiler/hardware dependency - */
  466. X  /*        if (differ) mtmp->data = NULL;*/
  467. X  /*#else*/
  468. X          mtmp->data = (struct permonst *)
  469. X***************
  470. X*** 731,737 ****
  471. X  int
  472. X  mread(fd, buf, len)
  473. X  int fd;
  474. X! register genericptr_t buf;
  475. X  register unsigned len;
  476. X  {
  477. X      /*register int readlen = 0;*/
  478. X--- 733,739 ----
  479. X  int
  480. X  mread(fd, buf, len)
  481. X  int fd;
  482. X! genericptr_t buf;
  483. X  register unsigned len;
  484. X  {
  485. X      /*register int readlen = 0;*/
  486. X***************
  487. X*** 739,749 ****
  488. X      while (len--) {
  489. X        if (inrunlength > 0) {
  490. X        inrunlength--;
  491. X!       *((char *)buf)++ = '\0';
  492. X        } else {
  493. X        register short ch = mgetc();
  494. X        if (ch < 0) return -1; /*readlen;*/
  495. X!       if ((*((char *)buf)++ = ch) == RLESC) {
  496. X            inrunlength = mgetc();
  497. X        }
  498. X        }
  499. X--- 741,751 ----
  500. X      while (len--) {
  501. X        if (inrunlength > 0) {
  502. X        inrunlength--;
  503. X!       *(*((char **)&buf))++ = '\0';
  504. X        } else {
  505. X        register short ch = mgetc();
  506. X        if (ch < 0) return -1; /*readlen;*/
  507. X!       if ((*(*(char **)&buf)++ = ch) == RLESC) {
  508. X            inrunlength = mgetc();
  509. X        }
  510. X        }
  511. X*** src/Old/rip.c    Wed Sep  6 16:00:54 1989
  512. X--- src/rip.c    Mon Aug 28 15:52:36 1989
  513. X***************
  514. X*** 48,55 ****
  515. X      center(7, buf);
  516. X      Sprintf(buf, "killed by%s",
  517. X          !strncmp(killer, "the ", 4) ? "" :
  518. X!         !strcmp(killer, "starvation") ? "" :
  519. X!          !strcmp(killer, "strangulation") ? "" :
  520. X          !strncmp(killer, "Mr.", 3) ? "" :
  521. X          !strncmp(killer, "Ms.", 3) ? "" :
  522. X          index(vowels, *killer) ? " an" : " a");
  523. X--- 48,55 ----
  524. X      center(7, buf);
  525. X      Sprintf(buf, "killed by%s",
  526. X          !strncmp(killer, "the ", 4) ? "" :
  527. X!         (!strcmp(eos(killer)-4, "tion") && *(eos(killer)-5)!='o') ? "" :
  528. X!         !strcmp(killer, "contaminated water") ? "" :
  529. X          !strncmp(killer, "Mr.", 3) ? "" :
  530. X          !strncmp(killer, "Ms.", 3) ? "" :
  531. X          index(vowels, *killer) ? " an" : " a");
  532. X*** src/Old/rnd.c    Wed Sep  6 16:01:12 1989
  533. X--- src/rnd.c    Thu Aug 17 23:21:18 1989
  534. X***************
  535. X*** 33,39 ****
  536. X  
  537. X  int
  538. X  rnl(x)        /* 0 <= rnl(x) < x; somtimes subtracting Luck */
  539. X! register x;    /* good luck approaches 0, bad luck approaches (x-1) */
  540. X  {
  541. X      register int i = RND(x);
  542. X  
  543. X--- 33,39 ----
  544. X  
  545. X  int
  546. X  rnl(x)        /* 0 <= rnl(x) < x; somtimes subtracting Luck */
  547. X! register int x;    /* good luck approaches 0, bad luck approaches (x-1) */
  548. X  {
  549. X      register int i = RND(x);
  550. X  
  551. X*** src/Old/save.c    Wed Sep  6 16:01:41 1989
  552. X--- src/save.c    Sat Sep  2 15:01:18 1989
  553. X***************
  554. X*** 452,462 ****
  555. X  void
  556. X  bwrite(fd, loc, num)
  557. X  register int fd;
  558. X! register genericptr_t loc;
  559. X  register unsigned num;
  560. X  {
  561. X        bwritefd = fd;
  562. X!       for (; num; num--, ((char *)loc)++) {
  563. X            if (*((char *)loc) == RLESC) { /* One more char in run */
  564. X            if (++outrunlength == 0xFF) {
  565. X                flushoutrun(outrunlength);
  566. X--- 452,462 ----
  567. X  void
  568. X  bwrite(fd, loc, num)
  569. X  register int fd;
  570. X! genericptr_t loc;
  571. X  register unsigned num;
  572. X  {
  573. X        bwritefd = fd;
  574. X!       for (; num; num--, (*(char **)&loc)++) {
  575. X            if (*((char *)loc) == RLESC) { /* One more char in run */
  576. X            if (++outrunlength == 0xFF) {
  577. X                flushoutrun(outrunlength);
  578. X***************
  579. X*** 685,691 ****
  580. X  char *from, *to;
  581. X  {
  582. X  #ifdef TOS
  583. X-     extern int _copyfile();
  584. X  
  585. X      if (_copyfile(from, to))
  586. X          panic("Can't copy %s to %s\n", from, to);
  587. X--- 685,690 ----
  588. X*** src/Old/search.c    Wed Sep  6 16:02:07 1989
  589. X--- src/search.c    Tue Sep  5 12:07:13 1989
  590. X***************
  591. X*** 158,164 ****
  592. X                      return(1);
  593. X                  }
  594. X                  trap->tseen = 1;
  595. X!                 if(!vism_at(x,y)) atl(x,y,(char) TRAP_SYM);
  596. X                  }
  597. X              }
  598. X          }
  599. X--- 158,166 ----
  600. X                      return(1);
  601. X                  }
  602. X                  trap->tseen = 1;
  603. X!                 if(!vism_at(x,y))
  604. X!                     atl(x,y,(char) ((trap->ttyp==WEB)
  605. X!                         ? WEB_SYM : TRAP_SYM));
  606. X                  }
  607. X              }
  608. X          }
  609. X*** src/Old/shk.c    Wed Sep  6 16:02:26 1989
  610. X--- src/shk.c    Thu Aug 31 14:46:56 1989
  611. X***************
  612. X*** 704,713 ****
  613. X              }
  614. X  
  615. X              if (invent) {
  616. X-                 levl[ox][oy].omask = 1;
  617. X                  for(otmp = invent; otmp; otmp = otmp->nobj) {
  618. X!                 otmp->ox = ox;
  619. X!                 otmp->oy = oy;
  620. X                  otmp->age = 0;
  621. X                  }
  622. X  
  623. X--- 704,711 ----
  624. X              }
  625. X  
  626. X              if (invent) {
  627. X                  for(otmp = invent; otmp; otmp = otmp->nobj) {
  628. X!                 place_object(otmp, ox, oy);
  629. X                  otmp->age = 0;
  630. X                  }
  631. X  
  632. X***************
  633. X*** 1298,1309 ****
  634. X  
  635. X  void
  636. X  pay_for_door(x,y,dmgstr)
  637. X! register int x, y;
  638. X! register char *dmgstr;
  639. X  {
  640. X!     register struct monst *mtmp;
  641. X!     register int roomno = inroom(x, y);
  642. X!     register int damage = (ACURR(A_STR) > 18) ? 400 : 20 * ACURR(A_STR);
  643. X  
  644. X      /* make sure this function is not used in the wrong place */
  645. X      if(!(IS_DOOR(levl[x][y].typ) && in_shop(x, y))) return;
  646. X--- 1296,1307 ----
  647. X  
  648. X  void
  649. X  pay_for_door(x,y,dmgstr)
  650. X! int x, y;
  651. X! char *dmgstr;
  652. X  {
  653. X!     struct monst *mtmp;
  654. X!     int roomno = inroom(x, y);
  655. X!     register int damage;
  656. X  
  657. X      /* make sure this function is not used in the wrong place */
  658. X      if(!(IS_DOOR(levl[x][y].typ) && in_shop(x, y))) return;
  659. X***************
  660. X*** 1351,1360 ****
  661. X      shopkeeper->my = y;
  662. X      pmon(shopkeeper);
  663. X  
  664. X!     if(um_dist(x, y, 1)) goto chase;
  665. X  
  666. X!     if(u.ugold < (long) damage || !rn2(50)) {
  667. X! chase:
  668. X          if(um_dist(x, y, 1))
  669. X              pline("%s shouts: \"Who dared %s my door?\"",
  670. X                  shkname(shopkeeper), dmgstr);
  671. X--- 1349,1357 ----
  672. X      shopkeeper->my = y;
  673. X      pmon(shopkeeper);
  674. X  
  675. X!     damage = (ACURR(A_STR) > 18) ? 400 : 20 * ACURR(A_STR);
  676. X  
  677. X!     if(um_dist(x, y, 1) || u.ugold < (long) damage || !rn2(50)) {
  678. X          if(um_dist(x, y, 1))
  679. X              pline("%s shouts: \"Who dared %s my door?\"",
  680. X                  shkname(shopkeeper), dmgstr);
  681. X*** src/Old/spell.c    Wed Sep  6 16:04:23 1989
  682. X--- src/spell.c    Fri Aug 25 01:39:36 1989
  683. X***************
  684. X*** 128,135 ****
  685. X  register struct obj *spellbook;
  686. X  {
  687. X      register int     booktype = spellbook->otyp;
  688. X-     register boolean oops      = !spellbook->blessed && (spellbook->cursed ||
  689. X- rn2(20) > (ACURR(A_INT) + 4 + (int)(u.ulevel/2) - 2*objects[booktype].spl_lev));
  690. X  
  691. X      if (delay && spellbook == book)
  692. X          You("continue your efforts to memorize the spell.");
  693. X--- 128,133 ----
  694. X***************
  695. X*** 194,200 ****
  696. X          return(0);
  697. X      }
  698. X  
  699. X!         if (oops) {
  700. X              cursed_book(objects[booktype].spl_lev);
  701. X              nomul(delay);            /* study time */
  702. X              delay = 0;
  703. X--- 192,201 ----
  704. X          return(0);
  705. X      }
  706. X  
  707. X!         if(!spellbook->blessed &&
  708. X!             (spellbook->cursed ||
  709. X!                 rn2(20) > (ACURR(A_INT) + 4 + (int)(u.ulevel/2)
  710. X!                     - 2*objects[booktype].spl_lev))) {
  711. X              cursed_book(objects[booktype].spl_lev);
  712. X              nomul(delay);            /* study time */
  713. X              delay = 0;
  714. X*** src/Old/steal.c    Wed Sep  6 16:04:58 1989
  715. X--- src/steal.c    Sun Aug 20 14:26:37 1989
  716. X***************
  717. X*** 242,254 ****
  718. X      register struct obj *otmp, *otmp2;
  719. X  
  720. X      for(otmp = mtmp->minvent; otmp; otmp = otmp2){
  721. X!         otmp->ox = mtmp->mx;
  722. X!         otmp->oy = mtmp->my;
  723. X          otmp2 = otmp->nobj;
  724. X          otmp->nobj = fobj;
  725. X          if (flooreffects(otmp,mtmp->mx,mtmp->my)) continue;
  726. X          fobj = otmp;
  727. X-         levl[otmp->ox][otmp->oy].omask = 1;
  728. X          stackobj(fobj);
  729. X          if(show & cansee(mtmp->mx,mtmp->my))
  730. X              atl(otmp->ox,otmp->oy,Hallucination?rndobjsym() : otmp->olet);
  731. X--- 242,252 ----
  732. X      register struct obj *otmp, *otmp2;
  733. X  
  734. X      for(otmp = mtmp->minvent; otmp; otmp = otmp2){
  735. X!         place_object(otmp, mtmp->mx, mtmp->my);
  736. X          otmp2 = otmp->nobj;
  737. X          otmp->nobj = fobj;
  738. X          if (flooreffects(otmp,mtmp->mx,mtmp->my)) continue;
  739. X          fobj = otmp;
  740. X          stackobj(fobj);
  741. X          if(show & cansee(mtmp->mx,mtmp->my))
  742. X              atl(otmp->ox,otmp->oy,Hallucination?rndobjsym() : otmp->olet);
  743. X*** src/Old/termcap.c    Wed Sep  6 16:05:17 1989
  744. X--- src/termcap.c    Mon Aug 28 16:34:14 1989
  745. X***************
  746. X*** 63,79 ****
  747. X  startup()
  748. X  {
  749. X  #ifdef TERMLIB
  750. X!     register char *term;
  751. X      register char *tptr;
  752. X      char *tbufptr, *pc;
  753. X  #endif
  754. X      register int i;
  755. X  
  756. X  #ifdef TERMLIB
  757. X!     if(!(term = getenv("TERM")))
  758. X  #endif
  759. X! #if defined(TOS) && defined(__GNUC__)    /* library has a default */
  760. X!         term = "st52";
  761. X  #else
  762. X  # ifdef ANSI_DEFAULT
  763. X  #  ifdef TOS
  764. X--- 63,124 ----
  765. X  startup()
  766. X  {
  767. X  #ifdef TERMLIB
  768. X!     register char *term = getenv("TERM");
  769. X      register char *tptr;
  770. X      char *tbufptr, *pc;
  771. X  #endif
  772. X      register int i;
  773. X  
  774. X+     /* Set the default map symbols */
  775. X+     (void) memcpy((genericptr_t) &showsyms, 
  776. X+         (genericptr_t) &defsyms, sizeof(struct symbols));
  777. X+ 
  778. X+ #if !defined(AMIGA) && !defined(TOS)
  779. X+ # if defined(TERMLIB) || !(defined(DECRAINBOW) || defined(OS2))
  780. X+ #  define IBMXASCII
  781. X+ # endif
  782. X+ #endif
  783. X+ 
  784. X+ #ifdef IBMXASCII
  785. X+     /*
  786. X+      * If we're on an IBM box, default to the nice IBM Extended ASCII
  787. X+      * line-drawing characters (codepage 437).
  788. X+      *
  789. X+      * OS/2 defaults to a multilingual character set (codepage 850,
  790. X+      * corresponding to the ISO 8859 character set.  We should probably
  791. X+      * do a VioSetCp() call to set the codepage to 437.
  792. X+      *
  793. X+      * Someday we should do a full terminfo(4) check for ACS forms
  794. X+      * characters.
  795. X+      */
  796. X+ # if !defined(MSDOS) || defined(DECRAINBOW) || defined(OS2)
  797. X+     if (strncmp("AT", term, 2) == 0)
  798. X+ # endif
  799. X+     {
  800. X+         showsyms.vwall = 0xb3;    /* meta-3, vertical rule */
  801. X+         showsyms.hwall = 0xc4;    /* meta-D, horizontal rule */
  802. X+         showsyms.tlcorn = 0xda;    /* meta-Z, top left corner */
  803. X+         showsyms.trcorn = 0xbf;    /* meta-?, top right corner */
  804. X+         showsyms.blcorn = 0xc0;    /* meta-@, bottom left */
  805. X+         showsyms.brcorn = 0xd9;    /* meta-Y, bottom right */
  806. X+         showsyms.crwall = 0xc5;    /* meta-E, cross */
  807. X+         showsyms.tuwall = 0xc1;    /* meta-A, T up */
  808. X+         showsyms.tdwall = 0xc2;    /* meta-B, T down */
  809. X+         showsyms.tlwall = 0xb4;    /* meta-4, T left */
  810. X+         showsyms.trwall = 0xc3;    /* meta-C, T right */
  811. X+         showsyms.vbeam = 0xb3;    /* meta-3, vertical rule */
  812. X+         showsyms.hbeam = 0xc4;    /* meta-D, horizontal rule */
  813. X+         showsyms.room = 0xfa;    /* meta-z, centered dot */
  814. X+         showsyms.pool = 0xf7;    /* meta-w, approx. equals */
  815. X+     }
  816. X+ #endif /* IBMXASCII */
  817. X+ #undef IBMXASCII
  818. X+ 
  819. X  #ifdef TERMLIB
  820. X!     if(!term)
  821. X  #endif
  822. X! #if defined(TOS) && defined(__GNUC__) && defined(TERMLIB)
  823. X!         term = "st52";        /* library has a default */
  824. X  #else
  825. X  # ifdef ANSI_DEFAULT
  826. X  #  ifdef TOS
  827. X***************
  828. X*** 568,573 ****
  829. X--- 613,619 ----
  830. X  {
  831. X      int erret;
  832. X      char *setf, *scratch;
  833. X+     register int c;
  834. X      extern int setupterm();
  835. X      extern char *tparm(), *tigetstr();
  836. X  
  837. X*** src/Old/timeout.c    Wed Sep  6 16:05:46 1989
  838. X--- src/timeout.c    Sun Aug 20 14:26:38 1989
  839. X***************
  840. X*** 131,137 ****
  841. X              /* call this only when a move took place.  */
  842. X              /* otherwise handle fumbling msgs locally. */
  843. X              if (!Levitation && u.umoved) {
  844. X!                 if (levl[u.ux][u.uy].omask)
  845. X                  You("trip over something.");
  846. X                  else
  847. X                  switch (rn2(4)) {
  848. X--- 131,137 ----
  849. X              /* call this only when a move took place.  */
  850. X              /* otherwise handle fumbling msgs locally. */
  851. X              if (!Levitation && u.umoved) {
  852. X!                 if (OBJ_AT(u.ux, u.uy))
  853. X                  You("trip over something.");
  854. X                  else
  855. X                  switch (rn2(4)) {
  856. X*** src/Old/topten.c    Wed Sep  6 16:06:17 1989
  857. X--- src/topten.c    Fri Sep  1 14:31:03 1989
  858. X***************
  859. X*** 11,20 ****
  860. X  #include <fcntl.h>    /* Ralf Brown */
  861. X  #endif
  862. X  
  863. X- static char *itoa P((int)), *ordin P((int));
  864. X- static void outheader();
  865. X- static int outentry P((int,struct toptenentry *,int));
  866. X- 
  867. X  #define newttentry() (struct toptenentry *) alloc(sizeof(struct toptenentry))
  868. X  #define    NAMSZ    10
  869. X  #define    DTHSZ    60
  870. X--- 11,16 ----
  871. X***************
  872. X*** 36,41 ****
  873. X--- 32,41 ----
  874. X      char date[7];        /* yymmdd */
  875. X  } *tt_head;
  876. X  
  877. X+ static char *itoa P((int)), *ordin P((int));
  878. X+ static void outheader();
  879. X+ static int outentry P((int,struct toptenentry *,int));
  880. X+ 
  881. X  void
  882. X  topten(){
  883. X      int uid = getuid();
  884. X***************
  885. X*** 339,345 ****
  886. X            t1->maxlvl);
  887. X  #ifdef ENDGAME
  888. X      } else if(!strncmp("ascended", t1->death, 8)) {
  889. X!        Strcat(linebuf, "ascended to demigod-hood");
  890. X  #endif
  891. X      } else {
  892. X        if(!strncmp(t1->death,"quit",4)) {
  893. X--- 339,347 ----
  894. X            t1->maxlvl);
  895. X  #ifdef ENDGAME
  896. X      } else if(!strncmp("ascended", t1->death, 8)) {
  897. X!        Strcat(linebuf, "ascended to demigod");
  898. X!        if (t1->sex == 'F') Strcat(linebuf, "dess");
  899. X!        Strcat(linebuf, "-hood");
  900. X  #endif
  901. X      } else {
  902. X        if(!strncmp(t1->death,"quit",4)) {
  903. X***************
  904. X*** 376,382 ****
  905. X      if(iskilled) Sprintf(eos(linebuf), " by %s%s",
  906. X        (!strncmp(t1->death, "trick", 5) || !strncmp(t1->death, "the ", 4)
  907. X         || !strncmp(t1->death, "Mr. ", 4) || !strncmp(t1->death, "Ms. ", 4)
  908. X!        || !strncmp(eos(t1->death)-5, "ation", 5)
  909. X         ) ? "" :
  910. X        index(vowels,*t1->death) ? "an " : "a ",
  911. X        t1->death);
  912. X--- 378,385 ----
  913. X      if(iskilled) Sprintf(eos(linebuf), " by %s%s",
  914. X        (!strncmp(t1->death, "trick", 5) || !strncmp(t1->death, "the ", 4)
  915. X         || !strncmp(t1->death, "Mr. ", 4) || !strncmp(t1->death, "Ms. ", 4)
  916. X!        || !strcmp(t1->death, "contaminated water")
  917. X!        || (!strncmp(eos(t1->death)-4,"tion",4) && *(eos(t1->death)-5)!='o')
  918. X         ) ? "" :
  919. X        index(vowels,*t1->death) ? "an " : "a ",
  920. X        t1->death);
  921. X***************
  922. X*** 689,696 ****
  923. X          return((struct obj *) 0);
  924. X      } else {
  925. X          otmp->corpsenm = classmon(tt->plchar, (tt->sex == 'F'));
  926. X!         otmp->owt = mons[otmp->corpsenm].cwt;
  927. X          otmp = oname(otmp, tt->name, 0);
  928. X          free((genericptr_t) tt);
  929. X          return otmp;
  930. X      }
  931. X--- 692,701 ----
  932. X          return((struct obj *) 0);
  933. X      } else {
  934. X          otmp->corpsenm = classmon(tt->plchar, (tt->sex == 'F'));
  935. X!         otmp->owt = weight(otmp);
  936. X!         /* Note: oname() is safe since otmp is first in chain */
  937. X          otmp = oname(otmp, tt->name, 0);
  938. X+         fobj = otmp;
  939. X          free((genericptr_t) tt);
  940. X          return otmp;
  941. X      }
  942. X*** src/Old/trap.c    Wed Sep  6 16:06:59 1989
  943. X--- src/trap.c    Sat Sep  2 15:05:29 1989
  944. X***************
  945. X*** 31,37 ****
  946. X          case 0:
  947. X          case 2: vulnerable = is_flammable(otmp); break;
  948. X          case 1: vulnerable = is_rustprone(otmp); break;
  949. X!         case 3: vulnerable = (otmp->otyp == BRONZE_PLATE_MAIL); break;
  950. X      }
  951. X  
  952. X      if (!print && (!vulnerable || otmp->rustfree || otmp->spe < -2))
  953. X--- 31,37 ----
  954. X          case 0:
  955. X          case 2: vulnerable = is_flammable(otmp); break;
  956. X          case 1: vulnerable = is_rustprone(otmp); break;
  957. X!         case 3: vulnerable = is_corrodeable(otmp); break;
  958. X      }
  959. X  
  960. X      if (!print && (!vulnerable || otmp->rustfree || otmp->spe < -2))
  961. X***************
  962. X*** 78,84 ****
  963. X          break;
  964. X          case STATUE_TRAP:        /* create a "living" statue */
  965. X          ttmp->pm = rndmonnum();
  966. X!         (void) mkstatue(&mons[ttmp->pm], x, y);
  967. X          break;
  968. X          default:
  969. X          ttmp->pm = -1;
  970. X--- 78,84 ----
  971. X          break;
  972. X          case STATUE_TRAP:        /* create a "living" statue */
  973. X          ttmp->pm = rndmonnum();
  974. X!         (void) mkcorpstat(STATUE, &mons[ttmp->pm], x, y);
  975. X          break;
  976. X          default:
  977. X          ttmp->pm = -1;
  978. X***************
  979. X*** 201,207 ****
  980. X              pline("A bear trap closes on your %s!",
  981. X              body_part(FOOT));
  982. X  #ifdef POLYSELF
  983. X!             if(u.umonnum == PM_OWLBEAR)
  984. X              You("howl in anger!");
  985. X  #endif
  986. X              break;
  987. X--- 201,207 ----
  988. X              pline("A bear trap closes on your %s!",
  989. X              body_part(FOOT));
  990. X  #ifdef POLYSELF
  991. X!             if(u.umonnum == PM_OWLBEAR || u.umonnum == PM_BUGBEAR)
  992. X              You("howl in anger!");
  993. X  #endif
  994. X              break;
  995. X***************
  996. X*** 305,311 ****
  997. X              break;
  998. X          case TELEP_TRAP:
  999. X              if(trap->once) {
  1000. X-             deltrap(trap);
  1001. X  #ifdef ENDGAME
  1002. X              if(dlevel == ENDLEVEL) {
  1003. X                  You("feel a wrenching sensation.");
  1004. X--- 305,310 ----
  1005. X***************
  1006. X*** 316,321 ****
  1007. X--- 315,321 ----
  1008. X                  shieldeff(u.ux, u.uy);
  1009. X                  You("feel a wrenching sensation.");
  1010. X              } else {
  1011. X+                 deltrap(trap);
  1012. X                  newsym(u.ux, u.uy);
  1013. X                  vtele();
  1014. X              }
  1015. X***************
  1016. X*** 625,631 ****
  1017. X      /* A bug fix for dumb messages by ab@unido.
  1018. X       */
  1019. X          int in_sight = cansee(mtmp->mx,mtmp->my)
  1020. X!                && (!mtmp->minvis || See_invisible || Telepat);
  1021. X  
  1022. X          if(mtmp->mtrapseen & (1 << tt)) {
  1023. X          /* he has been in such a trap - perhaps he escapes */
  1024. X--- 625,631 ----
  1025. X      /* A bug fix for dumb messages by ab@unido.
  1026. X       */
  1027. X          int in_sight = cansee(mtmp->mx,mtmp->my)
  1028. X!                && (!mtmp->minvis || See_invisible);
  1029. X  
  1030. X          if(mtmp->mtrapseen & (1 << tt)) {
  1031. X          /* he has been in such a trap - perhaps he escapes */
  1032. X***************
  1033. X*** 639,645 ****
  1034. X                    pline("%s is caught in a bear trap!",
  1035. X                      Monnam(mtmp));
  1036. X                  else
  1037. X!                     if(mtmp->data == &mons[PM_OWLBEAR]
  1038. X                      && flags.soundok)
  1039. X                  You("hear the roaring of an angry bear!");
  1040. X                  mtmp->mtrapped = 1;
  1041. X--- 639,646 ----
  1042. X                    pline("%s is caught in a bear trap!",
  1043. X                      Monnam(mtmp));
  1044. X                  else
  1045. X!                     if((mtmp->data == &mons[PM_OWLBEAR]
  1046. X!                     || mtmp->data == &mons[PM_BUGBEAR])
  1047. X                      && flags.soundok)
  1048. X                  You("hear the roaring of an angry bear!");
  1049. X                  mtmp->mtrapped = 1;
  1050. X***************
  1051. X*** 894,900 ****
  1052. X          default:
  1053. X              dotrap(trap);
  1054. X      }
  1055. X!     if(!flags.nopick && (levl[u.ux][u.uy].omask || levl[u.ux][u.uy].gmask))
  1056. X          pickup(1);
  1057. X      return 0;
  1058. X  }
  1059. X--- 895,901 ----
  1060. X          default:
  1061. X              dotrap(trap);
  1062. X      }
  1063. X!     if(!flags.nopick && (OBJ_AT(u.ux, u.uy) || levl[u.ux][u.uy].gmask))
  1064. X          pickup(1);
  1065. X      return 0;
  1066. X  }
  1067. X***************
  1068. X*** 962,968 ****
  1069. X      u.uy = nuy;
  1070. X  #ifdef POLYSELF
  1071. X      if (hides_under(uasmon))
  1072. X!         u.uundetected = (levl[nux][nuy].omask || levl[nux][nuy].gmask);
  1073. X      else 
  1074. X          u.uundetected = 0;
  1075. X      if (u.usym == S_MIMIC_DEF) u.usym = S_MIMIC;
  1076. X--- 963,969 ----
  1077. X      u.uy = nuy;
  1078. X  #ifdef POLYSELF
  1079. X      if (hides_under(uasmon))
  1080. X!         u.uundetected = (OBJ_AT(nux, nuy) || levl[nux][nuy].gmask);
  1081. X      else 
  1082. X          u.uundetected = 0;
  1083. X      if (u.usym == S_MIMIC_DEF) u.usym = S_MIMIC;
  1084. X***************
  1085. X*** 1071,1079 ****
  1086. X          impossible("Where are your chain and ball??");
  1087. X          return;
  1088. X      }
  1089. X!     uball->ox = uchain->ox = u.ux;
  1090. X!     uball->oy = uchain->oy = u.uy;
  1091. X!     levl[u.ux][u.uy].omask = 1;
  1092. X      if(attach){
  1093. X          uchain->nobj = fobj;
  1094. X          fobj = uchain;
  1095. X--- 1072,1079 ----
  1096. X          impossible("Where are your chain and ball??");
  1097. X          return;
  1098. X      }
  1099. X!     place_object(uball, u.ux, u.uy);
  1100. X!     place_object(uchain, u.ux, u.uy);
  1101. X      if(attach){
  1102. X          uchain->nobj = fobj;
  1103. X          fobj = uchain;
  1104. X***************
  1105. X*** 1170,1175 ****
  1106. X--- 1170,1178 ----
  1107. X          dlevel = 0;
  1108. X          killer = "long fall";
  1109. X          done(DIED);
  1110. X+ #ifdef WIZARD
  1111. X+         return;  
  1112. X+ #endif
  1113. X  #ifdef WALKIES
  1114. X          } else {
  1115. X          You("shudder for a moment...");
  1116. X***************
  1117. X*** 1252,1263 ****
  1118. X           case 19:
  1119. X              /* tame nearby monsters */
  1120. X             {   register int i,j;
  1121. X-                register boolean confused = (Confusion != 0);
  1122. X-                register int bd = confused ? 5 : 1;
  1123. X  
  1124. X                 /* below pline added by GAN 10/30/86 */
  1125. X                 adjattrib(A_CHA,1,FALSE);
  1126. X!                for(i = -bd; i <= bd; i++) for(j = -bd; j <= bd; j++)
  1127. X                 if(levl[u.ux+i][u.uy+j].mmask)
  1128. X                 (void) tamedog(m_at(u.ux+i, u.uy+j), (struct obj *)0);
  1129. X                 break;
  1130. X--- 1255,1264 ----
  1131. X           case 19:
  1132. X              /* tame nearby monsters */
  1133. X             {   register int i,j;
  1134. X  
  1135. X                 /* below pline added by GAN 10/30/86 */
  1136. X                 adjattrib(A_CHA,1,FALSE);
  1137. X!                for(i = -1; i <= 1; i++) for(j = -1; j <= 1; j++)
  1138. X                 if(levl[u.ux+i][u.uy+j].mmask)
  1139. X                 (void) tamedog(m_at(u.ux+i, u.uy+j), (struct obj *)0);
  1140. X                 break;
  1141. X***************
  1142. X*** 1266,1292 ****
  1143. X           case 20:
  1144. X              /* uncurse stuff */
  1145. X             {  register struct obj *obj;
  1146. X-               register boolean confused = (Confusion != 0);
  1147. X  
  1148. X              /* below plines added by GAN 10/30/86 */
  1149. X!             if (confused)
  1150. X!                 if (Hallucination)
  1151. X!                 You("feel the power of the Force against you!");
  1152. X!                 else
  1153. X!                 You("feel like you need some help.");
  1154. X              else
  1155. X!                 if (Hallucination)
  1156. X!                 You("feel in touch with the Universal Oneness.");
  1157. X!                 else
  1158. X!                 You("feel like someone is helping you.");
  1159. X!                for(obj = invent; obj ; obj = obj->nobj)
  1160. X!                    if(obj->owornmask)
  1161. X!                     if(confused)
  1162. X!                     curse(obj);
  1163. X!                     else
  1164. X                      obj->cursed = 0;
  1165. X!                if(Punished && !confused)
  1166. X!                 unpunish();
  1167. X                 break;
  1168. X             }
  1169. X           default: break;
  1170. X--- 1267,1282 ----
  1171. X           case 20:
  1172. X              /* uncurse stuff */
  1173. X             {  register struct obj *obj;
  1174. X  
  1175. X              /* below plines added by GAN 10/30/86 */
  1176. X!             if (Hallucination)
  1177. X!                 You("feel in touch with the Universal Oneness.");
  1178. X              else
  1179. X!                 You("feel like someone is helping you.");
  1180. X!             for(obj = invent; obj ; obj = obj->nobj)
  1181. X!                    if(obj->owornmask || obj->otyp == LOADSTONE)
  1182. X                      obj->cursed = 0;
  1183. X!                if(Punished) unpunish();
  1184. X                 break;
  1185. X             }
  1186. X           default: break;
  1187. X***************
  1188. X*** 1375,1381 ****
  1189. X      y = u.uy + u.dy;
  1190. X  
  1191. X      if(!u.dx && !u.dy) {
  1192. X!         if(levl[x][y].omask)
  1193. X          for(otmp = fobj; otmp; otmp = otmp->nobj)
  1194. X              if((otmp->ox == x) && (otmp->oy == y))
  1195. X              if(Is_box(otmp)) {
  1196. X--- 1365,1371 ----
  1197. X      y = u.uy + u.dy;
  1198. X  
  1199. X      if(!u.dx && !u.dy) {
  1200. X!         if(OBJ_AT(x, y))
  1201. X          for(otmp = fobj; otmp; otmp = otmp->nobj)
  1202. X              if((otmp->ox == x) && (otmp->oy == y))
  1203. X              if(Is_box(otmp)) {
  1204. X***************
  1205. X*** 1660,1671 ****
  1206. X          }
  1207. X      }
  1208. X      if (obj && (!strike || d_override)) {
  1209. X!         obj->ox = mon->mx;
  1210. X!         obj->oy = mon->my;
  1211. X          obj->nobj = fobj;
  1212. X          fobj = obj;
  1213. X          stackobj(fobj);
  1214. X-         levl[obj->ox][obj->oy].omask = 1;
  1215. X      } else if (obj) free ((genericptr_t)obj);
  1216. X  
  1217. X      return trapkilled;
  1218. X--- 1650,1659 ----
  1219. X          }
  1220. X      }
  1221. X      if (obj && (!strike || d_override)) {
  1222. X!         place_object(obj, mon->mx, mon->my);
  1223. X          obj->nobj = fobj;
  1224. X          fobj = obj;
  1225. X          stackobj(fobj);
  1226. X      } else if (obj) free ((genericptr_t)obj);
  1227. X  
  1228. X      return trapkilled;
  1229. X*** src/Old/u_init.c    Wed Sep  6 16:08:03 1989
  1230. X--- src/u_init.c    Sun Sep  3 11:54:51 1989
  1231. X***************
  1232. X*** 182,188 ****
  1233. X  #else
  1234. X  #  define W_MULTEND    5
  1235. X  #endif
  1236. X!     { DAGGER, 0, WEAPON_SYM, 1, 1, 1 },    /* for dealing with ghosts */
  1237. X      { CLOAK_OF_MAGIC_RESISTANCE, 0, ARMOR_SYM, 1, 1, UNDEF_BLESS },
  1238. X      { UNDEF_TYP, UNDEF_SPE, WAND_SYM, 1, 1, UNDEF_BLESS },
  1239. X      { UNDEF_TYP, UNDEF_SPE, RING_SYM, 2, 1, UNDEF_BLESS },
  1240. X--- 182,188 ----
  1241. X  #else
  1242. X  #  define W_MULTEND    5
  1243. X  #endif
  1244. X!     { ATHAME, 1, WEAPON_SYM, 1, 1, 1 },    /* for dealing with ghosts */
  1245. X      { CLOAK_OF_MAGIC_RESISTANCE, 0, ARMOR_SYM, 1, 1, UNDEF_BLESS },
  1246. X      { UNDEF_TYP, UNDEF_SPE, WAND_SYM, 1, 1, UNDEF_BLESS },
  1247. X      { UNDEF_TYP, UNDEF_SPE, RING_SYM, 2, 1, UNDEF_BLESS },
  1248. X***************
  1249. X*** 498,504 ****
  1250. X          ini_inv(Wishing);
  1251. X  #endif
  1252. X      find_ac();            /* get initial ac value */
  1253. X!     init_attr((pick != 'y') ? 69 : 72);    /* init attribute values */
  1254. X      max_rank_sz();            /* set max str size for class ranks */
  1255. X  /*
  1256. X   *    Do we really need this?
  1257. X--- 498,504 ----
  1258. X          ini_inv(Wishing);
  1259. X  #endif
  1260. X      find_ac();            /* get initial ac value */
  1261. X!     init_attr((pick != 'Y') ? 69 : 72);    /* init attribute values */
  1262. X      max_rank_sz();            /* set max str size for class ranks */
  1263. X  /*
  1264. X   *    Do we really need this?
  1265. X***************
  1266. X*** 507,512 ****
  1267. X--- 507,513 ----
  1268. X          if(!rn2(20)) {
  1269. X          register int xd = rn2(7) - 2;    /* biased variation */
  1270. X          adjattrib(i, xd, TRUE);
  1271. X+         if (ABASE(i) < AMAX(i)) AMAX(i) = ABASE(i);
  1272. X          }
  1273. X  
  1274. X      /* make sure he can carry all he has - especially for T's */
  1275. X*** src/Old/uhitm.c    Wed Sep  6 16:08:46 1989
  1276. X--- src/uhitm.c    Wed Sep  6 11:54:03 1989
  1277. X***************
  1278. X*** 96,102 ****
  1279. X          if (!(Blind ? Telepat : (HTelepat & WORN_HELMET))) {
  1280. X              register struct obj *obj;
  1281. X  
  1282. X!             if(levl[mtmp->mx][mtmp->my].omask == 1) {
  1283. X              if(obj = o_at(mtmp->mx,mtmp->my))
  1284. X                  pline("Wait!  There's %s hiding under %s!",
  1285. X                      defmonnam(mtmp), doname(obj));
  1286. X--- 96,103 ----
  1287. X          if (!(Blind ? Telepat : (HTelepat & WORN_HELMET))) {
  1288. X              register struct obj *obj;
  1289. X  
  1290. X!             if(Blind) pline("Wait!  There's a hidden monster there!");
  1291. X!             else if(OBJ_AT(mtmp->mx, mtmp->my)) {
  1292. X              if(obj = o_at(mtmp->mx,mtmp->my))
  1293. X                  pline("Wait!  There's %s hiding under %s!",
  1294. X                      defmonnam(mtmp), doname(obj));
  1295. X***************
  1296. X*** 284,290 ****
  1297. X  int tmp;
  1298. X  {
  1299. X      static int malive;
  1300. X!     boolean mhit = !((tmp <= rnd(20)) && !u.uswallow);
  1301. X  
  1302. X      malive = known_hitum(mon, mhit);
  1303. X      (void) passive(mon, mhit, malive, FALSE);
  1304. X--- 285,291 ----
  1305. X  int tmp;
  1306. X  {
  1307. X      static int malive;
  1308. X!     boolean mhit = (tmp > rnd(20) || u.uswallow);
  1309. X  
  1310. X      malive = known_hitum(mon, mhit);
  1311. X      (void) passive(mon, mhit, malive, FALSE);
  1312. X***************
  1313. X*** 460,465 ****
  1314. X--- 461,467 ----
  1315. X              if(mon->msleep) mon->msleep = 0;
  1316. X              setmangry(mon);
  1317. X              mon->mcansee = 0;
  1318. X+             tmp = rnd(25) + 20;
  1319. X              if((mon->mblinded + tmp) > 127) mon->mblinded = 127;
  1320. X              else mon->mblinded += tmp;
  1321. X              hittxt = TRUE;
  1322. X***************
  1323. X*** 628,633 ****
  1324. X--- 630,637 ----
  1325. X          mdef->mstun = 1;
  1326. X          /* fall through to next case */
  1327. X          case AD_WERE:        /* no effect on monsters */
  1328. X+         case AD_HEAL:
  1329. X+         case AD_LEGS:
  1330. X          case AD_PHYS:
  1331. X          if(mattk->aatyp == AT_WEAP) {
  1332. X              if(uwep) tmp = 0;
  1333. X***************
  1334. X*** 709,715 ****
  1335. X                  if (!stolen && otmp==stealoid) {
  1336. X                      if(isize < 52) {
  1337. X                          otmp = addinv(otmp);
  1338. X!                         isize++;
  1339. X                      } else dropy(otmp);
  1340. X                      stealoid = otmp;
  1341. X                      stolen = TRUE;
  1342. X--- 713,720 ----
  1343. X                  if (!stolen && otmp==stealoid) {
  1344. X                      if(isize < 52) {
  1345. X                          otmp = addinv(otmp);
  1346. X!                         /* might not increase isize */
  1347. X!                         isize = inv_cnt();
  1348. X                      } else dropy(otmp);
  1349. X                      stealoid = otmp;
  1350. X                      stolen = TRUE;
  1351. X***************
  1352. X*** 716,725 ****
  1353. X                  } else {
  1354. X                      if(isize < 52) {
  1355. X                          otmp = addinv(otmp);
  1356. X!                         isize++;
  1357. X!                     } else dropy(otmp);
  1358. X!                     You("steal: ");
  1359. X!                     prinv(otmp);
  1360. X                  }
  1361. X              }
  1362. X              if (!stolen)
  1363. X--- 721,733 ----
  1364. X                  } else {
  1365. X                      if(isize < 52) {
  1366. X                          otmp = addinv(otmp);
  1367. X!                         isize = inv_cnt();
  1368. X!                         You("steal: ");
  1369. X!                         prinv(otmp);
  1370. X!                     } else {
  1371. X!                         dropy(otmp);
  1372. X!                         You("steal %s.", doname(otmp));
  1373. X!                     }
  1374. X                  }
  1375. X              }
  1376. X              if (!stolen)
  1377. X***************
  1378. X*** 727,733 ****
  1379. X              else {
  1380. X                  kludge("%s finishes taking off his suit.",
  1381. X                              Monnam(mdef));
  1382. X!                 You("steal a %s.", xname(stealoid));
  1383. X  # ifdef ARMY
  1384. X                  mdef->data = &mons[PM_UNARMORED_SOLDIER];
  1385. X  # endif
  1386. X--- 735,741 ----
  1387. X              else {
  1388. X                  kludge("%s finishes taking off his suit.",
  1389. X                              Monnam(mdef));
  1390. X!                 You("steal %s!", doname(stealoid));
  1391. X  # ifdef ARMY
  1392. X                  mdef->data = &mons[PM_UNARMORED_SOLDIER];
  1393. X  # endif
  1394. X***************
  1395. X*** 735,744 ****
  1396. X             } else {
  1397. X                    otmp = mdef->minvent;
  1398. X                 mdef->minvent = otmp->nobj;
  1399. X!                if(isize < 52) otmp = addinv(otmp);
  1400. X!                else dropy(otmp);
  1401. X!                You("steal: ");
  1402. X!                prinv(otmp);
  1403. X             }
  1404. X          }
  1405. X          tmp = 0;
  1406. X--- 743,756 ----
  1407. X             } else {
  1408. X                    otmp = mdef->minvent;
  1409. X                 mdef->minvent = otmp->nobj;
  1410. X!                if(isize < 52) {
  1411. X!                 otmp = addinv(otmp);
  1412. X!                 You("steal: ");
  1413. X!                 prinv(otmp);
  1414. X!                } else {
  1415. X!                 dropy(otmp);
  1416. X!                 You("steal %s.", doname(otmp));
  1417. X!                }
  1418. X             }
  1419. X          }
  1420. X          tmp = 0;
  1421. X***************
  1422. X*** 789,795 ****
  1423. X              kludge("%s suddenly seems weaker!", Monnam(mdef));
  1424. X              mdef->mhpmax -= xtmp;
  1425. X              if ((mdef->mhp -= xtmp) <= 0 || !mdef->m_lev--) {
  1426. X!                 kludge("%s dies.", Monnam(mdef));
  1427. X                  xkilled(mdef,0);
  1428. X                  return(2);
  1429. X              }
  1430. X--- 801,807 ----
  1431. X              kludge("%s suddenly seems weaker!", Monnam(mdef));
  1432. X              mdef->mhpmax -= xtmp;
  1433. X              if ((mdef->mhp -= xtmp) <= 0 || !mdef->m_lev--) {
  1434. X!                 kludge("%s dies!", Monnam(mdef));
  1435. X                  xkilled(mdef,0);
  1436. X                  return(2);
  1437. X              }
  1438. X***************
  1439. X*** 837,842 ****
  1440. X--- 849,860 ----
  1441. X          if (!sticks(mdef->data))
  1442. X              u.ustuck = mdef; /* it's now stuck to you */
  1443. X          break;
  1444. X+         case AD_PLYS:
  1445. X+         if (!mdef->mfroz && !rn2(3) && tmp < mdef->mhp) {
  1446. X+             if (!Blind) pline("%s is frozen by you!", Monnam(mdef));
  1447. X+             mdef->mfroz = 1;
  1448. X+         }
  1449. X+         break;
  1450. X          default:    tmp = 0;
  1451. X              break;
  1452. X      }
  1453. X***************
  1454. X*** 1059,1065 ****
  1455. X       * attack.  Is this really desirable?
  1456. X       */
  1457. X              if(uwep) tmp += hitval(uwep, mon->data);
  1458. X!             dhit = !((tmp <= rnd(20)) && !u.uswallow);
  1459. X              /* Enemy dead, before any special abilities used */
  1460. X              if (!known_hitum(mon,dhit)) return 0;
  1461. X              /* Do not print "You hit" message, since known_hitum
  1462. X--- 1077,1083 ----
  1463. X       * attack.  Is this really desirable?
  1464. X       */
  1465. X              if(uwep) tmp += hitval(uwep, mon->data);
  1466. X!             dhit = (tmp > rnd(20) || u.uswallow);
  1467. X              /* Enemy dead, before any special abilities used */
  1468. X              if (!known_hitum(mon,dhit)) return 0;
  1469. X              /* Do not print "You hit" message, since known_hitum
  1470. X*** src/Old/unixmain.c    Wed Sep  6 16:09:59 1989
  1471. X--- src/unixmain.c    Fri Aug 25 15:14:07 1989
  1472. X***************
  1473. X*** 66,74 ****
  1474. X              error("Flag -d must be followed by a directory name.");
  1475. X      }
  1476. X  #endif /* CHDIR /**/
  1477. X!     /* Set the default values of the presentation characters */
  1478. X!     (void) memcpy((genericptr_t) &showsyms,
  1479. X!         (genericptr_t) &defsyms, sizeof(struct symbols));
  1480. X      initoptions();
  1481. X      whoami();
  1482. X      /*
  1483. X--- 66,81 ----
  1484. X              error("Flag -d must be followed by a directory name.");
  1485. X      }
  1486. X  #endif /* CHDIR /**/
  1487. X! 
  1488. X!     /*
  1489. X!      *  Remember tty modes, to be restored on exit.
  1490. X!      *
  1491. X!      *  Note that getty() must be called before startup() due to ordering
  1492. X!      *  of LI/CO settings, and startup() must be called before initoptions()
  1493. X!      *  due to ordering of graphics settings.
  1494. X!      */
  1495. X!     gettty();
  1496. X!     startup();
  1497. X      initoptions();
  1498. X      whoami();
  1499. X      /*
  1500. X***************
  1501. X*** 80,96 ****
  1502. X          chdirx(dir,0);
  1503. X  #endif
  1504. X          prscore(argc, argv);
  1505. X          exit(0);
  1506. X      }
  1507. X  
  1508. X      /*
  1509. X       * It seems he really wants to play.
  1510. X-      * Remember tty modes, to be restored on exit.
  1511. X       */
  1512. X-     gettty();
  1513. X      setbuf(stdout,obuf);
  1514. X      setrandom();
  1515. X-     startup();
  1516. X      cls();
  1517. X      u.uhp = 1;    /* prevent RIP on early quits */
  1518. X      u.ux = FAR;    /* prevent nscr() */
  1519. X--- 87,102 ----
  1520. X          chdirx(dir,0);
  1521. X  #endif
  1522. X          prscore(argc, argv);
  1523. X+         getret();
  1524. X+         settty(NULL);
  1525. X          exit(0);
  1526. X      }
  1527. X  
  1528. X      /*
  1529. X       * It seems he really wants to play.
  1530. X       */
  1531. X      setbuf(stdout,obuf);
  1532. X      setrandom();
  1533. X      cls();
  1534. X      u.uhp = 1;    /* prevent RIP on early quits */
  1535. X      u.ux = FAR;    /* prevent nscr() */
  1536. X*** src/Old/vault.c    Wed Sep  6 16:10:50 1989
  1537. X--- src/vault.c    Thu Aug 31 14:47:54 1989
  1538. X***************
  1539. X*** 146,154 ****
  1540. X  
  1541. X  int
  1542. X  gd_move(){
  1543. X!     register int x, y, dx, dy, gx, gy, nx, ny, typ, i;
  1544. X!     register struct fakecorridor *fcp;
  1545. X      register struct rm *crm;
  1546. X      if(!guard || gdlevel != dlevel){
  1547. X          impossible("Where is the guard?");
  1548. X          return(2);    /* died */
  1549. X--- 146,156 ----
  1550. X  
  1551. X  int
  1552. X  gd_move(){
  1553. X!     int x, y, nx, ny;
  1554. X!     int dx, dy, gx, gy, typ, i;
  1555. X!     struct fakecorridor *fcp;
  1556. X      register struct rm *crm;
  1557. X+ 
  1558. X      if(!guard || gdlevel != dlevel){
  1559. X          impossible("Where is the guard?");
  1560. X          return(2);    /* died */
  1561. X*** src/Old/version.c    Wed Sep  6 16:11:20 1989
  1562. X--- src/version.c    Mon Aug 21 12:24:19 1989
  1563. X***************
  1564. X*** 5,11 ****
  1565. X  #include    "hack.h"
  1566. X  #include    "date.h"
  1567. X  #ifndef BETA
  1568. X! #include    "patchlevel.h"
  1569. X  #endif
  1570. X  
  1571. X  int
  1572. X--- 5,15 ----
  1573. X  #include    "hack.h"
  1574. X  #include    "date.h"
  1575. X  #ifndef BETA
  1576. X! #ifdef MSDOS
  1577. X! # include    "patchlev.h"
  1578. X! #else
  1579. X! # include    "patchlevel.h"
  1580. X! #endif
  1581. X  #endif
  1582. X  
  1583. X  int
  1584. X*** src/Old/weapon.c    Wed Sep  6 16:11:53 1989
  1585. X--- src/weapon.c    Thu Aug 31 15:17:40 1989
  1586. X***************
  1587. X*** 38,43 ****
  1588. X--- 38,45 ----
  1589. X          case ORCISH_DAGGER:
  1590. X  #endif
  1591. X          case DAGGER:
  1592. X+         case SCALPEL:
  1593. X+         case ATHAME:
  1594. X          case SHURIKEN:        tmp += 2; break;
  1595. X  #ifdef WORM
  1596. X          case CRYSKNIFE:        tmp += 3; break;
  1597. X***************
  1598. X*** 83,89 ****
  1599. X  #ifdef TOLKIEN
  1600. X          case ELVEN_BROADSWORD:
  1601. X  #endif
  1602. X!         case BROADSWORD:    tmp += 1; break;
  1603. X  
  1604. X          case FLAIL:
  1605. X          case RANSEUR:
  1606. X--- 85,91 ----
  1607. X  #ifdef TOLKIEN
  1608. X          case ELVEN_BROADSWORD:
  1609. X  #endif
  1610. X!         case BROADSWORD:    tmp++; break;
  1611. X  
  1612. X          case FLAIL:
  1613. X          case RANSEUR:
  1614. X***************
  1615. X*** 107,115 ****
  1616. X          switch (otmp->otyp) {
  1617. X          case CROSSBOW_BOLT:
  1618. X          case MACE:
  1619. X          case FLAIL:
  1620. X          case SPETUM:
  1621. X!         case TRIDENT:        tmp += 1; break;
  1622. X  
  1623. X          case BARDICHE:
  1624. X          case BILL_GUISARME:
  1625. X--- 109,118 ----
  1626. X          switch (otmp->otyp) {
  1627. X          case CROSSBOW_BOLT:
  1628. X          case MACE:
  1629. X+         case WAR_HAMMER:
  1630. X          case FLAIL:
  1631. X          case SPETUM:
  1632. X!         case TRIDENT:        tmp++; break;
  1633. X  
  1634. X          case BARDICHE:
  1635. X          case BILL_GUISARME:
  1636. X***************
  1637. X*** 225,234 ****
  1638. X  #endif
  1639. X            break;
  1640. X          case WP_SLING:
  1641. X!           no_propellor = (m_carrying(mtmp, SLING) != 0);
  1642. X            break;
  1643. X          case WP_CROSSBOW:
  1644. X!           no_propellor = (m_carrying(mtmp, CROSSBOW) != 0);
  1645. X          }
  1646. X            }
  1647. X          if (!no_propellor) {
  1648. X--- 228,237 ----
  1649. X  #endif
  1650. X            break;
  1651. X          case WP_SLING:
  1652. X!           no_propellor = !(m_carrying(mtmp, SLING));
  1653. X            break;
  1654. X          case WP_CROSSBOW:
  1655. X!           no_propellor = !(m_carrying(mtmp, CROSSBOW));
  1656. X          }
  1657. X            }
  1658. X          if (!no_propellor) {
  1659. X***************
  1660. X*** 268,275 ****
  1661. X  #ifdef KOPS
  1662. X        {RUBBER_HOSE,0},
  1663. X  #endif /* KOPS */
  1664. X!       {ELVEN_DAGGER,0}, {DAGGER,0}, {ORCISH_DAGGER,0}, {SCALPEL,0},
  1665. X!       {KNIFE,0},
  1666. X  #ifdef WORM
  1667. X        {WORM_TOOTH,0},
  1668. X  #endif
  1669. X--- 271,278 ----
  1670. X  #ifdef KOPS
  1671. X        {RUBBER_HOSE,0},
  1672. X  #endif /* KOPS */
  1673. X!       {WAR_HAMMER,0}, {ELVEN_DAGGER,0}, {DAGGER,0}, {ORCISH_DAGGER,0},
  1674. X!       {ATHAME,0}, {SCALPEL,0}, {KNIFE,0},
  1675. X  #ifdef WORM
  1676. X        {WORM_TOOTH,0},
  1677. X  #endif
  1678. X***************
  1679. X*** 291,297 ****
  1680. X  #ifdef KOPS
  1681. X        {RUBBER_HOSE,0},
  1682. X  #endif /* KOPS */
  1683. X!       {DAGGER,0}, {SCALPEL,0}, {KNIFE,0},
  1684. X  #ifdef WORM
  1685. X        {WORM_TOOTH,0},
  1686. X  #endif
  1687. X--- 294,300 ----
  1688. X  #ifdef KOPS
  1689. X        {RUBBER_HOSE,0},
  1690. X  #endif /* KOPS */
  1691. X!       {WAR_HAMMER,0}, {DAGGER,0}, {ATHAME,0}, {SCALPEL,0}, {KNIFE,0},
  1692. X  #ifdef WORM
  1693. X        {WORM_TOOTH,0},
  1694. X  #endif
  1695. X*** src/Old/were.c    Wed Sep  6 16:12:27 1989
  1696. X--- src/were.c    Tue Sep  5 22:05:15 1989
  1697. X***************
  1698. X*** 22,49 ****
  1699. X          } else if(!rn2(30)) new_were(mon);
  1700. X  }
  1701. X  
  1702. X  void
  1703. X  new_were(mon)
  1704. X  register struct monst *mon;
  1705. X  {
  1706. X!     int pm;
  1707. X! 
  1708. X!     switch((pm = monsndx(mon->data))) {
  1709. X  
  1710. X!         case PM_WEREWOLF:    pm = PM_WOLFWERE;
  1711. X!                 break;
  1712. X!         case PM_WOLFWERE:    pm = PM_WEREWOLF;
  1713. X!                 break;
  1714. X!         case PM_WEREJACKAL:    pm = PM_JACKALWERE;
  1715. X!                 break;
  1716. X!         case PM_JACKALWERE:    pm = PM_WEREJACKAL;
  1717. X!                 break;
  1718. X!         case PM_WERERAT:    pm = PM_RATWERE;
  1719. X!                 break;
  1720. X!         case PM_RATWERE:    pm = PM_WERERAT;
  1721. X!                 break;
  1722. X!         default:    impossible("unknown lycanthrope %s.", mon->data->mname);
  1723. X!             return;
  1724. X      }
  1725. X  
  1726. X      if(canseemon(mon))
  1727. X--- 22,52 ----
  1728. X          } else if(!rn2(30)) new_were(mon);
  1729. X  }
  1730. X  
  1731. X+ static int
  1732. X+ counter_were(pm)
  1733. X+ int pm;
  1734. X+ {
  1735. X+     switch(pm) {
  1736. X+         case PM_WEREWOLF:    return(PM_WOLFWERE);
  1737. X+         case PM_WOLFWERE:    return(PM_WEREWOLF);
  1738. X+         case PM_WEREJACKAL:    return(PM_JACKALWERE);
  1739. X+         case PM_JACKALWERE:    return(PM_WEREJACKAL);
  1740. X+         case PM_WERERAT:    return(PM_RATWERE);
  1741. X+         case PM_RATWERE:    return(PM_WERERAT);
  1742. X+         default:        return(0);
  1743. X+     }
  1744. X+ }
  1745. X+ 
  1746. X  void
  1747. X  new_were(mon)
  1748. X  register struct monst *mon;
  1749. X  {
  1750. X!     register int pm;
  1751. X  
  1752. X!     pm = counter_were(monsndx(mon->data));
  1753. X!     if(!pm) {
  1754. X!         impossible("unknown lycanthrope %s.", mon->data->mname);
  1755. X!         return;
  1756. X      }
  1757. X  
  1758. X      if(canseemon(mon))
  1759. X*** src/Old/worm.c    Wed Sep  6 16:13:11 1989
  1760. X--- src/worm.c    Thu Aug 31 14:48:45 1989
  1761. X***************
  1762. X*** 146,158 ****
  1763. X  
  1764. X  void
  1765. X  cutworm(mtmp, x, y, weptyp)
  1766. X! register struct monst *mtmp;
  1767. X! register xchar x,y;
  1768. X! register unsigned weptyp;        /* uwep->otyp or 0 */
  1769. X  {
  1770. X      register struct wseg *wtmp, *wtmp2;
  1771. X!     register struct monst *mtmp2;
  1772. X!     register int tmp, tmp2;
  1773. X  
  1774. X      if(mtmp->mx == x && mtmp->my == y) return;    /* hit headon */
  1775. X  
  1776. X--- 146,158 ----
  1777. X  
  1778. X  void
  1779. X  cutworm(mtmp, x, y, weptyp)
  1780. X! struct monst *mtmp;
  1781. X! xchar x,y;
  1782. X! unsigned weptyp;        /* uwep->otyp or 0 */
  1783. X  {
  1784. X      register struct wseg *wtmp, *wtmp2;
  1785. X!     struct monst *mtmp2;
  1786. X!     int tmp, tmp2;
  1787. X  
  1788. X      if(mtmp->mx == x && mtmp->my == y) return;    /* hit headon */
  1789. X  
  1790. X*** src/Old/worn.c    Wed Sep  6 16:13:43 1989
  1791. X--- src/worn.c    Fri Sep  1 14:31:53 1989
  1792. X***************
  1793. X*** 5,11 ****
  1794. X  #include "hack.h"
  1795. X  
  1796. X  static const char crispy[] = "The flames of Hell burn you to a crisp.";
  1797. X! static void set_armor_intrinsic P((struct obj *,boolean));
  1798. X  
  1799. X  const struct worn {
  1800. X      long w_mask;
  1801. X--- 5,11 ----
  1802. X  #include "hack.h"
  1803. X  
  1804. X  static const char crispy[] = "The flames of Hell burn you to a crisp.";
  1805. X! static void set_armor_intrinsic P((struct obj *,long,BOOLEAN_P));
  1806. X  
  1807. X  const struct worn {
  1808. X      long w_mask;
  1809. X***************
  1810. X*** 49,55 ****
  1811. X              u.uprops[objects[oobj->otyp].oc_oprop].p_flgs = 
  1812. X                  u.uprops[objects[oobj->otyp].oc_oprop].p_flgs & 
  1813. X                  ~wp->w_mask;
  1814. X!             set_armor_intrinsic(oobj, 0);
  1815. X          }
  1816. X          *(wp->w_obj) = obj;
  1817. X          if(obj) {
  1818. X--- 49,55 ----
  1819. X              u.uprops[objects[oobj->otyp].oc_oprop].p_flgs = 
  1820. X                  u.uprops[objects[oobj->otyp].oc_oprop].p_flgs & 
  1821. X                  ~wp->w_mask;
  1822. X!             set_armor_intrinsic(oobj, wp->w_mask, 0);
  1823. X          }
  1824. X          *(wp->w_obj) = obj;
  1825. X          if(obj) {
  1826. X***************
  1827. X*** 57,63 ****
  1828. X              u.uprops[objects[obj->otyp].oc_oprop].p_flgs = 
  1829. X                  u.uprops[objects[obj->otyp].oc_oprop].p_flgs | 
  1830. X                  wp->w_mask;
  1831. X!             set_armor_intrinsic(obj, 1);
  1832. X          }
  1833. X      }
  1834. X      /* A kludge to solve the problem of someone gaining fire resistance
  1835. X--- 57,63 ----
  1836. X              u.uprops[objects[obj->otyp].oc_oprop].p_flgs = 
  1837. X                  u.uprops[objects[obj->otyp].oc_oprop].p_flgs | 
  1838. X                  wp->w_mask;
  1839. X!             set_armor_intrinsic(obj, wp->w_mask, 1);
  1840. X          }
  1841. X      }
  1842. X      /* A kludge to solve the problem of someone gaining fire resistance
  1843. X***************
  1844. X*** 98,104 ****
  1845. X                  u.uprops[objects[obj->otyp].oc_oprop].p_flgs & 
  1846. X                      ~wp->w_mask;
  1847. X              obj->owornmask &= ~wp->w_mask;
  1848. X!             set_armor_intrinsic(obj, 0);
  1849. X          }
  1850. X      /* See comments above in setworn().  The major difference is the
  1851. X       * need to check AMULET_SYM so if someone goes to Hell without
  1852. X--- 98,104 ----
  1853. X                  u.uprops[objects[obj->otyp].oc_oprop].p_flgs & 
  1854. X                      ~wp->w_mask;
  1855. X              obj->owornmask &= ~wp->w_mask;
  1856. X!             set_armor_intrinsic(obj, wp->w_mask, 0);
  1857. X          }
  1858. X      /* See comments above in setworn().  The major difference is the
  1859. X       * need to check AMULET_SYM so if someone goes to Hell without
  1860. X***************
  1861. X*** 129,136 ****
  1862. X  }
  1863. X  
  1864. X  static void
  1865. X! set_armor_intrinsic(obj,on)
  1866. X  register struct obj *obj;
  1867. X  boolean on;
  1868. X  {
  1869. X      long *mask;
  1870. X--- 129,137 ----
  1871. X  }
  1872. X  
  1873. X  static void
  1874. X! set_armor_intrinsic(obj,maskbit,on)
  1875. X  register struct obj *obj;
  1876. X+ long maskbit;    /* people can do funny things like wield armor */
  1877. X  boolean on;
  1878. X  {
  1879. X      long *mask;
  1880. X***************
  1881. X*** 162,167 ****
  1882. X          default:
  1883. X              return;
  1884. X      }
  1885. X!     if (on) *mask |= WORN_ARMOR;
  1886. X!     else *mask &= ~WORN_ARMOR;
  1887. X  }
  1888. X--- 163,168 ----
  1889. X          default:
  1890. X              return;
  1891. X      }
  1892. X!     if (on) *mask |= maskbit;
  1893. X!     else *mask &= ~maskbit;
  1894. X  }
  1895. X*** src/Old/write.c    Wed Sep  6 16:14:24 1989
  1896. X--- src/write.c    Wed Aug 30 18:39:58 1989
  1897. X***************
  1898. X*** 39,44 ****
  1899. X--- 39,45 ----
  1900. X      case SCR_ENCHANT_ARMOR:
  1901. X      case SCR_REMOVE_CURSE:
  1902. X      case SCR_ENCHANT_WEAPON:
  1903. X+     case SCR_CHARGING:
  1904. X          return(16);
  1905. X  /*        break; */
  1906. X      case SCR_SCARE_MONSTER:
  1907. X*** src/Old/zap.c    Wed Sep  6 16:14:59 1989
  1908. X--- src/zap.c    Tue Sep  5 21:34:29 1989
  1909. X***************
  1910. X*** 33,39 ****
  1911. X  
  1912. X      "blast of missiles",    /* Dragon breath equivalents 20-29*/
  1913. X      "blast of fire",
  1914. X!     "blast of sleeping gas",
  1915. X      "blast of frost",
  1916. X      "blast of disintegration",
  1917. X      "blast of lightning",
  1918. X--- 33,39 ----
  1919. X  
  1920. X      "blast of missiles",    /* Dragon breath equivalents 20-29*/
  1921. X      "blast of fire",
  1922. X!     "blast of sleep gas",
  1923. X      "blast of frost",
  1924. X      "blast of disintegration",
  1925. X      "blast of lightning",
  1926. X***************
  1927. X*** 582,588 ****
  1928. X  #ifdef POLYSELF
  1929. X              polyself();
  1930. X  #else
  1931. X!             You("shudder for a moment.");
  1932. X  #endif
  1933. X              break;
  1934. X          case WAN_CANCELLATION:
  1935. X--- 582,588 ----
  1936. X  #ifdef POLYSELF
  1937. X              polyself();
  1938. X  #else
  1939. X!             newman();
  1940. X  #endif
  1941. X              break;
  1942. X          case WAN_CANCELLATION:
  1943. X***************
  1944. X*** 723,729 ****
  1945. X                  (void)close_drawbridge(u.ux, u.uy);
  1946. X              else
  1947. X  #endif
  1948. X!             if (levl[u.ux][u.uy].omask) {
  1949. X              register struct obj *otmp,*otmp2;
  1950. X  
  1951. X              /* changed by GAN to hit all objects there */
  1952. X--- 723,729 ----
  1953. X                  (void)close_drawbridge(u.ux, u.uy);
  1954. X              else
  1955. X  #endif
  1956. X!             if (OBJ_AT(u.ux, u.uy)) {
  1957. X              register struct obj *otmp,*otmp2;
  1958. X  
  1959. X              /* changed by GAN to hit all objects there */
  1960. X***************
  1961. X*** 781,791 ****
  1962. X              if(u.uswallow) {
  1963. X                  register struct monst *mtmp = u.ustuck;
  1964. X  
  1965. X!                 You("pierce %s's stomach wall!",
  1966. X!                     mon_nam(mtmp));
  1967. X                  mtmp->mhp = 1;    /* almost dead */
  1968. X!                 unstuck(mtmp);
  1969. X!                 mnexto(mtmp);
  1970. X                  break;
  1971. X              }
  1972. X              if(u.dz) {
  1973. X--- 781,789 ----
  1974. X              if(u.uswallow) {
  1975. X                  register struct monst *mtmp = u.ustuck;
  1976. X  
  1977. X!                 You("pierce %s's stomach wall!", mon_nam(mtmp));
  1978. X                  mtmp->mhp = 1;    /* almost dead */
  1979. X!                 regurgitates(mtmp);
  1980. X                  break;
  1981. X              }
  1982. X              if(u.dz) {
  1983. X***************
  1984. X*** 982,988 ****
  1985. X              range -= 3;
  1986. X          }
  1987. X          /* modified by GAN to hit all objects */
  1988. X!         if(fhito && levl[bhitpos.x][bhitpos.y].omask){
  1989. X              int hitanything = 0;
  1990. X              otmp = fobj;
  1991. X              /* Fix for polymorph bug, Tim Wright */
  1992. X--- 980,986 ----
  1993. X              range -= 3;
  1994. X          }
  1995. X          /* modified by GAN to hit all objects */
  1996. X!         if(fhito && OBJ_AT(bhitpos.x, bhitpos.y)){
  1997. X              int hitanything = 0;
  1998. X              otmp = fobj;
  1999. X              /* Fix for polymorph bug, Tim Wright */
  2000. X***************
  2001. X*** 1198,1204 ****
  2002. X      register struct obj *obj, *obj2;
  2003. X      register int scrquan, i, cnt = 0;
  2004. X  
  2005. X!     if(levl[x][y].omask)
  2006. X      for(obj = fobj; obj; obj = obj2) {
  2007. X          obj2 = obj->nobj;
  2008. X          /* Bug fix - KAA */
  2009. X--- 1196,1202 ----
  2010. X      register struct obj *obj, *obj2;
  2011. X      register int scrquan, i, cnt = 0;
  2012. X  
  2013. X!     if(OBJ_AT(x, y))
  2014. X      for(obj = fobj; obj; obj = obj2) {
  2015. X          obj2 = obj->nobj;
  2016. X          /* Bug fix - KAA */
  2017. X***************
  2018. X*** 1392,1398 ****
  2019. X                 break;
  2020. X              }
  2021. X          }
  2022. X!         if(levl[sx][sy].omask && abstype == 1)
  2023. X              if(burn_floor_scrolls(sx,sy) && cansee(sx,sy))  {
  2024. X                  mnewsym(sx,sy);
  2025. X                  if(!Blind)
  2026. X--- 1390,1396 ----
  2027. X                 break;
  2028. X              }
  2029. X          }
  2030. X!         if(OBJ_AT(sx, sy) && abstype == 1)
  2031. X              if(burn_floor_scrolls(sx,sy) && cansee(sx,sy))  {
  2032. X                  mnewsym(sx,sy);
  2033. X                  if(!Blind)
  2034. X***************
  2035. X*** 1616,1627 ****
  2036. X          tx = rn1(COLNO-3,2);
  2037. X          ty = rn2(ROWNO);
  2038. X      } while(!goodpos(tx,ty,(struct permonst *)0));
  2039. X!     obj->ox = tx;
  2040. X!     obj->oy = ty;
  2041. X!     set_omask(otx,oty);
  2042. X      if(cansee(otx,oty))
  2043. X          newsym(otx,oty);
  2044. X-     levl[tx][ty].omask = 1;
  2045. X      if(cansee(tx,ty))
  2046. X          newsym(tx,ty);
  2047. X  }
  2048. X--- 1614,1622 ----
  2049. X          tx = rn1(COLNO-3,2);
  2050. X          ty = rn2(ROWNO);
  2051. X      } while(!goodpos(tx,ty,(struct permonst *)0));
  2052. X!     move_object(obj, tx, ty);
  2053. X      if(cansee(otx,oty))
  2054. X          newsym(otx,oty);
  2055. X      if(cansee(tx,ty))
  2056. X          newsym(tx,ty);
  2057. X  }
  2058. X
  2059. END_OF_FILE
  2060. if test 55124 -ne `wc -c <'patch03f'`; then
  2061.     echo shar: \"'patch03f'\" unpacked with wrong size!
  2062. fi
  2063. # end of 'patch03f'
  2064. fi
  2065. echo shar: End of archive 6 \(of 6\).
  2066. cp /dev/null ark6isdone
  2067. MISSING=""
  2068. for I in 1 2 3 4 5 6 ; do
  2069.     if test ! -f ark${I}isdone ; then
  2070.     MISSING="${MISSING} ${I}"
  2071.     fi
  2072. done
  2073. if test "${MISSING}" = "" ; then
  2074.     echo You have unpacked all 6 archives.
  2075.     rm -f ark[1-9]isdone
  2076. else
  2077.     echo You still need to unpack the following archives:
  2078.     echo "        " ${MISSING}
  2079. fi
  2080. ##  End of shell archive.
  2081. exit 0
  2082.